import Icons from 'unplugin-icons/vite'
import IconsResolver from 'unplugin-icons/resolver'
import { fileURLToPath, URL } from 'node:url'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueDevTools from 'vite-plugin-vue-devtools'
import Components from 'unplugin-vue-components/vite'
import { PrimeVueResolver } from '@primevue/auto-import-resolver'
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
import path from 'path'

// https://vite.dev/config/
export default defineConfig({
  plugins: [
    vue(),
    vueDevTools(),
    Icons({
      // scale: 1.2, // 统一缩放
      // defaultStyle: '', // 默认样式
      // defaultClass: '', // 默认类名
      // jsx: 'react',// 支持 React/Vue
      compiler: 'vue3',
      autoInstall: true,
    }),
    createSvgIconsPlugin({
      // 指定要缓存的图标文件夹
      iconDirs: [path.resolve(process.cwd(), 'src/assets/icons')],
      // 指定symbolId格式
      symbolId: 'icon-[dir]-[name]',
      inject: 'body-last', // 改为在 body 末尾注入
      customDomId: '__svg__icons__dom__', // 自定义 DOM ID

      // SVG优化/压缩配置
      svgoOptions: {
        plugins: [
          'removeXMLProcInst',
          'removeComments',
          {
            name: 'convertColors',
            params: {
              currentColor: false, // 将所有颜色转换为 currentColor
              names2hex: true, // 将颜色名称转换为十六进制值
              rgb2hex: true, // 将 RGB 值转换为十六进制值
              shorthex: true, // 使用短十六进制值
            },
          },
          {
            name: 'removeAttrs',
            params: {
              attrs: ['class', 'data-name'], // 保留 fill 属性
            },
          },
          {
            name: 'addAttributesToSVGElement',
            params: {
              attributes: [{ 'fill-rule': 'evenodd' }, { 'clip-rule': 'evenodd' }],
            },
          },
        ],
      },
    }),
    Components({
      resolvers: [
        PrimeVueResolver(),
        IconsResolver({
          prefix: 'i', // 图标组件的前缀
        }),
      ],
    }),
  ],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url)),
    },
  },
})
